knitr::opts_chunk$set(echo = TRUE)

Preparativos

# Carga de paquetes 
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
#  Registros de presencia de JUnco vulcani
primates <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )

# Asignacion de CRS
st_crs(primates) = 4326

# Capa geoespacil de cantones
# Carga de la capa de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )
# Cruce espacial con la tabla de cantones, para obtener el nombre del cantón
primates <-
  primates %>%
  st_join(cantones["canton"])


Introduccion

Se utilisa el conjunto de datos sobre 4 especies de primates de Costa Rica.


Tabla de registros de presencia

# Tabla de registros de presencia
primates %>%
  st_drop_geometry() %>%
  select(family, species, stateProvince, canton, locality, eventDate) %>%
  datatable(
    colnames = c("Familia","Especie","Provincia", "Canton", "Localidad", "Fecha"),
    options = list(searchHighlight = TRUE)
  )


Gráfico pastel

# cargar colores
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)')

#grafico pastel 
plot_ly(
  primates,
  labels = ~ species,
  type = "pie",
  textposition = "inside",
  textinfo = "label+percent",
  insidetextfont = list(color = "#FFFFFF"),
  marker = list(colors = colors)) %>%
  layout(
    title = "Cantidad de registros para cada especie de primate",
    xaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ),
    yaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    )
  )


Mapa

# Selección de la especie de primate (por atributos)
# capa de Ateles geoffroyi
Ateles_geoffroyi <-
  primates %>%
  filter(species == "Ateles geoffroyi")

# capa de Cebus capucinus
Cebus_capucinus <-
  primates %>%
  filter(species == "Cebus capucinus")

# capa de Alouatta palliata
Alouatta_palliata <-
  primates %>%
  filter(species == "Alouatta palliata")

# capa de Saimiri oerstedii
Saimiri_oerstedii <-
  primates %>%
  filter(species == "Saimiri oerstedii")
# Mapa de registros de presencia
primates %>%
  select(stateProvince,
         canton,
         locality,
         eventDate,
         family,
         species) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addCircleMarkers(
    stroke = F,
    radius = 4,
    fillColor = 'green',
    fillOpacity = 1,
    popup = paste(
      Ateles_geoffroyi$stateProvince,
      Ateles_geoffroyi$canton,
      Ateles_geoffroyi$locality,
      Ateles_geoffroyi$eventDate,
      Ateles_geoffroyi$family,
      Ateles_geoffroyi$species,
      sep = '<br/>'
    ),
    group = "Ateles_geoffroyi"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Imágenes de ESRI"),
    overlayGroups = c("Primates")
  ) %>%
    addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  )